package com.yyh.stu;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/*创建一个List，在List中增加三个工人，基本信息如下：姓名 年龄 工资
zhang3 18 3000
li4 25 3500
wang5 22 3200
在li4之前插入一个工人，信息为：姓名：zhao6，年龄：24，工资3300
删除wang5的信息
利用for循环遍历，打印List中所有工人的信息，并统计和计算工人的平均工资*/
public class Test3 {
    public static void main(String[] args) {
        //创建List集合对象
        List<Worker> list = new ArrayList<>();
        //创建三个工人对象
        Worker w1 = new Worker("zhang3",18,3000);
        Worker w2 = new Worker("li4",25,3500);
        Worker w3 = new Worker("wang5",22,3200);
        //添加工人到List集合中
        list.add(w1);
        list.add(w2);
        list.add(w3);
        //创建一个工人对象
        Worker w4 = new Worker("zhao6",24,3300);
        //在li4之前插入一个工人
        list.add(list.indexOf(w2),w4);
        //删除一个工人wang5的信息
        list.remove(w3);
        //遍历集合，并打印所有工人的信息
        for (Worker w : list) {
            System.out.println(w);
        }
        //计算所有工人的平均工资
        double sum = 0;
        for (Worker w : list) {
            sum += w.getSalary();
        }
        System.out.println("所有工人的平均工资为：" + sum/list.size());
    }
}
//创建工人类
class Worker{
    //属性
    // 姓名
    private String name;
    // 年龄
    private int age;
    // 工资
    private double salary;
    //无参构造方法
    public Worker() {
    }
    //有参构造方法
    public Worker(String name,int age,double salary){
        this.name = name;
        this.age = age;
        this.salary = salary;
    }
    //getter和setter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
    //重写equals和hashCode方法
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Worker worker = (Worker) o;
        return age == worker.age && Double.compare(worker.salary, salary) == 0 && Objects.equals(name, worker.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age, salary);
    }
    //重写toString方法
    @Override
    public String toString() {
        return "Worker{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", salary=" + salary +
                '}';
    }
}
